import request from '@/config/axios'

/** 绑定内容类型 */
export enum CourseItemType {
  /** 视频 */
  VIDEO = 1,
  /** 直播 */
  LIVE = 4,
  /** 题目 */
  QUESTION = 3,
  /** 图文 */
  ARTICLE = 2,
  /** 知识训练 */
  KNOWLEDGE = 5
}

/** 绑定内容类型映射中文 */
export const CourseItemTypeMap: Record<CourseItemType, string> = {
  [CourseItemType.VIDEO]: '视频',
  [CourseItemType.LIVE]: '直播',
  [CourseItemType.QUESTION]: '题目',
  [CourseItemType.ARTICLE]: '图文',
  [CourseItemType.KNOWLEDGE]: '知识训练'
}

/** 绑定内容类型选项 */
export const CourseItemTypeOptions = Object.entries(CourseItemTypeMap).map(([key, value]) => ({
  label: value,
  value: +key
}))

/** 课程条目状态 */
export enum CourseItemStatus {
  /** 正常 */
  ENABLE = 1,
  /** 停用 */
  DISABLE = 2
}

/** 课程条目状态映射中文 */
export const CourseItemStatusMap: Record<CourseItemStatus, string> = {
  [CourseItemStatus.ENABLE]: '正常',
  [CourseItemStatus.DISABLE]: '停用'
}

/** 课程条目状态选项 */
export const CourseItemStatusOptions = Object.entries(CourseItemStatusMap).map(([key, value]) => ({
  label: value,
  value: +key
}))

/** 课程条目 */
export type CourseItemVO = {
  id: string
  catalogId: string
  courseId: string
  itemName: string
  itemDesc: string
  courseItemType: CourseItemType
  courseItemTypeId: string
  isFree: boolean
  itemStatus: CourseItemStatus
  sortNo: number
  createTime: number
  updateTime: number
}

export type CourseItemDTO = Partial<CourseItemVO>

export type CourseItemCreateDTO = Omit<CourseItemVO, 'id' | 'createTime' | 'updateTime'>

export type CourseItemUpdateDTO = Pick<CourseItemVO, 'id'> & Partial<CourseItemCreateDTO>

const baseURL = '/train/course/item'

/** 根据课程id获取item列表 */
export const getListByCourseId = (courseId: string) =>
  request.get<CourseItemVO[]>({
    url: `${baseURL}/list-by-course-id`,
    params: { courseId }
  })

/** 根据目录id获取item列表 */
export const getListByCatalogId = (catalogId: string) =>
  request.get<CourseItemVO[]>({
    url: `${baseURL}/list-by-catalog-id`,
    params: { catalogId }
  })

/** 根据id获取item */
export const get = (id: string) =>
  request.get<CourseItemVO>({
    url: `${baseURL}/get-course-item-detail`,
    params: { id }
  })

/** 创建item */
export const create = (courseItem: CourseItemCreateDTO) =>
  request.post<boolean>({
    url: `${baseURL}/create`,
    data: courseItem
  })

/** 更新item */
export const update = (courseItem: CourseItemUpdateDTO) =>
  request.post<boolean>({
    url: `${baseURL}/update`,
    data: courseItem
  })

/** 删除item */
export const deleteById = (id: string) =>
  request.post<boolean>({
    url: `${baseURL}/delete`,
    params: { id }
  })
